


"""
打开文件的方式：
 r   :  以只读的方式打开文件，文件指针放在开头
 rb  :  以二进制打开一个文件只读，文件指针放在开头
 r+  :  打开一个文件，进行读写，文件指针放在开头
 rb+ :  以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。

 w   :  打开一个文件只用于写入。该文件存在则打开，从开头开始编辑，即原有内容会被删除。该文件不存在，创建新文件。
 wb  :  以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件，并从开头开始编辑，即原有内容会被删除。如果该文件不存在，创建新文件。
 w+  :  打开一个文件用于读写。如果该文件已存在则打开文件，并从新开头开始编辑，即原有内容会被删除。如果该文件不存在，创建文件。
 wb+ :  以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件，并从开头开始编辑，即原有内容会被删除。如果该文件不存在，创建新文件

 a   :  打开一个文件用于追加。如果该文件已存在，文件指针将会放在文件的结尾。也就是说，新的内容将会被写入到已有内容之后。如果该文件不存在，创建新文件进行写入。
 ab  :  以二进制格式打开一个文件用于追加。如果该文件已存在，文件指针将会放在文件的结尾。也就是说，新的内容将会被写入到已有内容之后。如果该文件不存在，创建新文件进行写入
 a+  :  打开一个文件用于读写。如果该文件已存在，文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在，创建新文件用于读写。
 ab+ :  以二进制格式打开一个文件用于追加。如果该文件已存在，文件指针将会放在文件的结尾。如果该文件不存在，创建新文件用于读写
"""
# 打开一个文件，没有则创建一个
fo = open("C:\\Users\\18875\Desktop\\test1.txt","w")
fo.write( "Python 是一个非常好的语言。\n是的，的确非常好!!\n")


# 读取文件
fo = open("C:\\Users\\18875\Desktop\\test1.txt","r")
# fo.write("this is write python")
# str = fo.read()
# print ("读取的字符串是 : ", str)

#读取行
# str1 = fo.readline()
# print(str1)
#
# #读取所有行
# str1 = fo.readlines()
# print(str1)
# for line in fo:
#     print(line, end='')


'''
f.tell()
f.tell() 返回文件对象当前所处的位置, 它是从文件开头开始算起的字节数。
'''
print(fo.tell())

'''
from_what 的值, 如果是 0 表示开头, 如果是 1 表示当前位置, 2 表示文件的结尾，例如：
seek(x,0) ： 从起始位置即文件首行首字符开始移动 x 个字符
seek(x,1) ： 表示从当前位置往后移动x个字符
seek(-x,2)：表示从文件的结尾往前移动x个字符
fo.seek(1)

pickle 模块
python的pickle模块实现了基本的数据序列和反序列化。
通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去，永久存储。
通过pickle模块的反序列化操作，我们能够从文件中创建上一次程序保存的对象。
'''
with open("C:\\Users\\18875\Desktop\\test11.txt","w") as foo:
    foo.write("hello,hello,hello")
foo.close()


fo.close()